package main

import "fmt"

//Go支持匿名函数，如果某个函数只是希望使用一次，可以考虑使用匿名函数，匿名函数也可以实现多次调用
//3如果将匿名函数赋给一个全局变量，那么这个匿名函数，就成为一个全局匿名函数，可以在程序有效
//Fun1就是一个全局匿名函数
var (
	Fun1 = func(n1 int, n2 int) int {
		return n1 * n2
	}
)

func main() {
	//1在定义匿名函数时就直接调用，这种方式匿名函数只能调用一次
	res1 := func(n1 int, n2 int) int {
		return n1 + n2
	}(10, 20)
	fmt.Println("res1=", res1)
	//2将匿名函数赋给一个变量（函数变量），再通过该变量来调用匿名函数
	//则a的数据类型就是函数类型，此时，可以通过a完成调用
	a := func(n1 int, n2 int) int {
		return n1 - n2
	}
	res2 := a(10, 30)
	fmt.Println("res2=", res2)
	res3 := a(90, 30)
	fmt.Println("res3=", res3)

	//全局匿名函数使用
	res4 := Fun1(4, 9)
	fmt.Println("res4=", res4)

}
